home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 1998 August / PC Plus SuperCD 50a Issue 142 (CD142a) (August 1998).iso / trial / demon / TURNPIKE.1 / CLASSES.ZIP / JAVA / UTIL / BitSet.class (.txt) next >
Encoding:
Java Class File  |  1997-04-14  |  2.0 KB  |  164 lines

  1. package java.util;
  2.  
  3. public final class BitSet implements Cloneable {
  4.    static final int BITS = 6;
  5.    static final int MASK = 63;
  6.    long[] bits;
  7.  
  8.    public BitSet() {
  9.       this(64);
  10.    }
  11.  
  12.    public BitSet(int var1) {
  13.       this.bits = new long[var1 + 63 >> 6];
  14.    }
  15.  
  16.    private void grow(int var1) {
  17.       long[] var2 = new long[Math.max(this.bits.length << 1, var1 + 63 >> 6)];
  18.       System.arraycopy(this.bits, 0, var2, 0, this.bits.length);
  19.       this.bits = var2;
  20.    }
  21.  
  22.    public void set(int var1) {
  23.       int var2 = var1 >> 6;
  24.       if (var2 >= this.bits.length) {
  25.          this.grow(var1);
  26.       }
  27.  
  28.       long[] var10000 = this.bits;
  29.       var10000[var2] |= 1L << (var1 & 63);
  30.    }
  31.  
  32.    public void clear(int var1) {
  33.       int var2 = var1 >> 6;
  34.       if (var2 >= this.bits.length) {
  35.          this.grow(var1);
  36.       }
  37.  
  38.       long[] var10000 = this.bits;
  39.       var10000[var2] &= ~(1L << (var1 & 63));
  40.    }
  41.  
  42.    public boolean get(int var1) {
  43.       int var2 = var1 >> 6;
  44.       if (var2 < this.bits.length) {
  45.          return (this.bits[var2] & 1L << (var1 & 63)) != 0L;
  46.       } else {
  47.          return false;
  48.       }
  49.    }
  50.  
  51.    public void and(BitSet var1) {
  52.       int var2 = Math.min(this.bits.length, var1.bits.length);
  53.  
  54.       long[] var4;
  55.       for(int var3 = var2; var3-- > 0; var4[var3] &= var1.bits[var3]) {
  56.          var4 = this.bits;
  57.       }
  58.  
  59.       while(var2 < this.bits.length) {
  60.          this.bits[var2] = 0L;
  61.          ++var2;
  62.       }
  63.  
  64.    }
  65.  
  66.    // $FF: renamed from: or (java.util.BitSet) void
  67.    public void method_0(BitSet var1) {
  68.       long[] var3;
  69.       for(int var2 = Math.min(this.bits.length, var1.bits.length); var2-- > 0; var3[var2] |= var1.bits[var2]) {
  70.          var3 = this.bits;
  71.       }
  72.  
  73.    }
  74.  
  75.    public void xor(BitSet var1) {
  76.       long[] var3;
  77.       for(int var2 = Math.min(this.bits.length, var1.bits.length); var2-- > 0; var3[var2] ^= var1.bits[var2]) {
  78.          var3 = this.bits;
  79.       }
  80.  
  81.    }
  82.  
  83.    public int hashCode() {
  84.       long var1 = 1234L;
  85.       int var3 = this.bits.length;
  86.  
  87.       while(true) {
  88.          --var3;
  89.          if (var3 < 0) {
  90.             return (int)(var1 >> 32 ^ var1);
  91.          }
  92.  
  93.          var1 ^= this.bits[var3] * (long)var3;
  94.       }
  95.    }
  96.  
  97.    public int size() {
  98.       return this.bits.length << 6;
  99.    }
  100.  
  101.    public boolean equals(Object var1) {
  102.       if (var1 != null && var1 instanceof BitSet) {
  103.          BitSet var2 = (BitSet)var1;
  104.          int var3 = Math.min(this.bits.length, var2.bits.length);
  105.          int var4 = var3;
  106.  
  107.          while(var4-- > 0) {
  108.             if (this.bits[var4] != var2.bits[var4]) {
  109.                return false;
  110.             }
  111.          }
  112.  
  113.          if (this.bits.length > var3) {
  114.             int var5 = this.bits.length;
  115.  
  116.             while(var5-- > var3) {
  117.                if (this.bits[var5] != 0L) {
  118.                   return false;
  119.                }
  120.             }
  121.          } else if (var2.bits.length > var3) {
  122.             int var6 = var2.bits.length;
  123.  
  124.             while(var6-- > var3) {
  125.                if (var2.bits[var6] != 0L) {
  126.                   return false;
  127.                }
  128.             }
  129.          }
  130.  
  131.          return true;
  132.       } else {
  133.          return false;
  134.       }
  135.    }
  136.  
  137.    public Object clone() {
  138.       try {
  139.          BitSet var1 = (BitSet)super.clone();
  140.          var1.bits = new long[this.bits.length];
  141.          System.arraycopy(this.bits, 0, var1.bits, 0, this.bits.length);
  142.          return var1;
  143.       } catch (CloneNotSupportedException var2) {
  144.          throw new InternalError();
  145.       }
  146.    }
  147.  
  148.    public String toString() {
  149.       String var1 = "";
  150.  
  151.       for(int var2 = 0; var2 < this.bits.length << 6; ++var2) {
  152.          if (this.get(var2)) {
  153.             if (var1.length() > 0) {
  154.                var1 = var1 + ", ";
  155.             }
  156.  
  157.             var1 = var1 + var2;
  158.          }
  159.       }
  160.  
  161.       return "{" + var1 + "}";
  162.    }
  163. }
  164.